分类 C++ 中的文章

RTTI

RTTI是”Runtime Type Information”的缩写,意思是运行时类型信息,它提供了运行时确定对象类型的方法。 typeid函数 对于c++的内置数据类型,typeid可以方便的输出它们的数据类型。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 #include <iostream> #include <typeinfo> using namespace std; int main() { short s = 2; unsigned ui = 10; int i = 10; char ch = 'a'; wchar_t wch = L'b'; float f = 1.……

阅读全文

C++ 中不能声明为虚函数的函数有哪些?

普通函数 普通函数(非成员函数)只能被overload,不能被override,而且编译器会在编译时绑定函数。 多态的运行期行为体现在虚函数上,虚函数通过继承方式来体现出多态作用,顶层函数不属于成员函数,是不能被继承的 构造函数 因为构造函数本来就是为了明确初始化对象成员才产生的,然而virtual function主要是为了在不完全了解细节的情况下也能正确处理对象。另外,virtual函数是在不同类型的对象产生不同的动作,现在对象还没有产生,如何使用virtual函数来完成你想完成的动作。 内联成员函数 内联函数就是为了在代码中直接展开,减少函数调用花费的代价,虚函数是为了在继承后对象能够准确的执行自己的动作,这是不可能统一的。 静态成员函数 静态成员函数对于每个类来说只有一份代码,所有的对象都共享这一份代码,他也没有要动态邦定的必要性。不能被继承,只属于该类。 友元函数 C++不支持友元函数的继承,对于没有继承特性的函数没有虚函数的说法。友元函数不属于类的成员函数,不能被继承。 ……

阅读全文

C++ std::string 在一个字符串前插入一个字符串几种方式

1、直接使用字符串相加 std::string a = "hello"; std::string b = "hello"; for(int i = 0; i < 100; ++i) { a = b + a; } 2、使用insert函数 std::string a = "hello"; for(int i = 0; i < 100; ++i) { a.insert(0, "hello"); } 比较:通过Quick C++ Benchmarks 可得到结果 static void StringCreation(benchmark::State& state) { // Code inside this loop is measured repeatedly std::string x = "hello"; for (auto _ : state) { x.……

阅读全文