C++ - Конструктор, перегружающийся - частный и общедоступный

Попробуйте следующий код:

   import React, { Component } from 'react';
import { Platform, StyleSheet, View, Image, Text } from 'react-native';


export default class App extends Component {

  render() {

    return (
      
         Normal Image
        

         Border Radius Image
        
      
    );
  }
}


const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center'
  },
  setFontSize: {
    fontSize: 20,
    fontWeight : 'bold' 
  },
  setBorder:
  {
    width: 170,  // Setting up image width. 
    height: 170,  // Setting up image height.  
    borderWidth: 3,  // Set border width.  
    borderColor: '#F44336',  // Set border Hex Color code here.   
  },
  setBorderRadius:
  {
    width: 170,  // Setting up image width. 
    height: 170,  // Setting up image height.  
    borderWidth: 3,  // Set border width.  
    borderColor: '#F44336',  // Set border Hex Color code here. 
    borderRadius: 60,  // Set border Radius.   
  }
});

enter image description here

8
задан 13 March 2009 в 20:23
поделиться

3 ответа

Это обсуждено в "Эффективном C++" Scott Meyer. Причина это неоднозначно, состоит в том, что они хотели удостовериться, что просто изменение видимости участника не изменит значение уже существующего кода в другом месте.

Иначе предположите, что Ваш класс C был в заголовке где-нибудь. Если бы у Вас был частный C (интервал) участник, то код, который Вы представляете, назвал бы C (плавание). Если бы по некоторым причинам C (интервал) участник был обнародован, то старый код внезапно позвонил бы тому участнику, даже при том, что ни старый код, ни функция, которую он вызвал, не изменились.

Править: Больше причин:

Еще хуже, предположите, что у Вас были следующие 2 функции:

C A::foo() 
{
    return C(1.0);
}

C B::bar() 
{
    return C(1.0);
}

Эти две функции могли вызвать различные функции в зависимости от того, были ли или нечто или панель объявлены как друг C, или или A, или B наследовался ему. Наличие идентичного кода вызывает различные функции, страшно.

(Это, вероятно, также не помещается как обсуждение Scott Meyer, но это - идея.)

18
ответ дан 5 December 2019 в 06:54
поделиться

0 int ввести. Поскольку это может быть неявно брошено или к плаванию или к символу одинаково, вызов неоднозначен. Видимость не важна в этих целях.

Любой помещенный 0.0, 0., или 0.0f, или избавьтесь от C(char) конструктор полностью.

Править: Соответствующая часть стандарта, разделите 13.3:

3) [...], Но, после того как кандидат функционирует и списки аргументов были определены, выбор лучшей функции является тем же во всех случаях:

  • Во-первых, подмножество функций кандидата — те, которые имеют надлежащее количество аргументов и удовлетворяют определенным другим условиям — выбраны для формирования ряда жизнеспособных функций (13.3.2).
  • Затем лучшая жизнеспособная функция выбрана на основе неявных последовательностей преобразования (13.3.3.1), должен был соответствовать каждому аргументу соответствующему параметру каждой жизнеспособной функции.

4) Если лучшая жизнеспособная функция существует и уникальна, разрешение перегрузки следует и производит ее как результат. Иначе сбои разрешения перегрузки и вызов плохо формируются. Когда разрешение перегрузки успешно выполняется, и лучшая жизнеспособная функция не доступна (пункт 11) в контексте, в котором это используется, программа плохо формируется.

Обратите внимание, что видимость не является частью процесса выбора.

7
ответ дан 5 December 2019 в 06:54
поделиться

Я не думаю что:

C p(0);

преобразовывается в:

C(float t)

вероятно, необходимо сделать:

C p(0.0f);
-1
ответ дан 5 December 2019 в 06:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: