我正在从在线课程学习iOS开发,每当我创建自定义视图(自定义表格视图单元格,集合视图单元格等)时,教师总是实现此初始化程序:
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
Run Code Online (Sandbox Code Playgroud)
为什么我总是要打电话给这个?它有什么作用?我可以在init中放置属性吗?
目前,G ++和VC++ 2010都不支持继承构造函数.
但是,我认为这是C++ 0x中最漂亮的功能之一.我认为编译器应该很容易实现.
为什么编译器对此功能不感兴趣?
假设我想通过继承std :: string来设计我自己的字符串类,如下所示:
class MyString : public std::string
{
public:
// I have to redefine many overloaded ctors here and forward their arguments to
// std::string's ctors. How tedious it will be!!!
};
Run Code Online (Sandbox Code Playgroud)
一个漂亮的代码示例:
struct B1
{
B1(char);
};
struct B2
{
B2(double);
B2(int);
};
struct D1 : B1, B2
{
using B1::B1; // D1(char)
using B2::B2; // D1(double), D1(int)
};
D1 d('c'); //OK, invokes D1(char)
Run Code Online (Sandbox Code Playgroud) 我一直在使用Eclipse Juno学习继承中的构造函数.
当我在childClass中按两次ctrl + O时,它显示继承的成员.但我碰巧在继承的成员中甚至看到超类的构造函数
但据说构造函数不是继承的......
有人可以解释一下这种行为吗?