gpt4 book ai didi

c++ - 为什么 C++11 大括号初始化与基于堆栈的类层次结构一起工作?

转载 作者:行者123 更新时间:2023-11-30 01:48:44 26 4
gpt4 key购买 nike

<分区>

我正在玩弄 C++11,我已经使用 c++ -std=c++11 main.cpp 在 Mac OS X 上成功编译了以下内容.

#include <iostream>
#include <vector>
#include <string>
using namespace std;


class s {
public:
s(const string& str) : value {str} {}
string value;
};

class t : public s
{
public:
t(const string& str) : s{"t: " + str} {}
};

int main(int argc, const char** argv) {

vector<s*> ss1
{
new s { "hello" },
new s { "there" }
};

vector<s> ss2
{
s { "greeting" },
s { "father" }
};

vector<s> ss3
{
{ "ahoy" },
{ "matey" }
};

vector<s> ss4
{
{ "bonjour" },
t { "mademouselle" }
};

for (auto &s : ss1) {
cout << "value: " << s->value << std::endl;
}

for (auto &s : ss2) {
cout << "value: " << s.value << std::endl;
}

for (auto &s : ss3) {
cout << "value: " << s.value << std::endl;
}

for (auto &s : ss4) {
cout << "value: " << s.value << std::endl;
}

};

输出在这里:

value: hello
value: there
value: greeting
value: father
value: ahoy
value: matey
value: bonjour
value: t: mademouselle

我不明白的是 ss4只是一个vector<s> ,但我能够存储派生类 t在里面。这怎么可能?

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com