C++基础巩固
crazyacm
这个作者很懒,什么都没留下…
展开
-
C++ 左值变右值
template<class T> struct MyRemoveRef { typedef T type; }; void static_cast_test() { std::string str = "hello"; std::string str1 = "hello"; std::string str2 = "hello"; std::string str3 = "...原创 2019-12-16 16:57:38 · 765 阅读 · 0 评论 -
知识误区-C++头文件
//H1.h #include void func1(); void func2(); //S_1.CPP #include "H1.h" void func1() { printf("func1\n"); } //S_2.CPP #include "H1.h" void func2() { printf("func2\n"); } //main.cpp #include "H1原创 2017-10-17 16:16:25 · 219 阅读 · 0 评论 -
C++ lambda入门
#include #include #include using namespace std; /* lambda表达式: [capture](parameters)->return_type {body} ----- -------- ---------- --- 捕捉式 传入的参数 返回类型 函数体 1.捕捉式:lambda的开头,[=],原创 2016-11-19 17:00:44 · 306 阅读 · 0 评论 -
Item09 绝不在构造和析构过程调用virtual函数
//Item09 绝不在构造和析构过程调用virtual函数 #include class base { public: base() { printf("base\n"); f(); } virtual void f() = 0 { printf("base::f\n"); } }; class drived :public base { public: drived()原创 2016-09-21 22:32:51 · 267 阅读 · 0 评论 -
strcpy函数
#include #include /* attention: 1.检查代码的健壮性。(判断两个指针是否为空) 2.NULL可以写在左边,防止少写=。 3.保存头指针是为了链式调用 ex:strlen(strcpy(a,b)); */ char *strcpy1(char *dest, char *src) { assert((dest != NULL) && (src != NULL)原创 2016-09-21 22:32:14 · 692 阅读 · 0 评论 -
关于重载赋值操作符需要返回引用
#include /* 如果赋值操作符不返回引用代码也能编译通过 但会增加调用copy构造函数的开销(因为返回局部对象会调用拷贝构造函数)。 返回引用的话能减少调用copy构造函数 (effective Item10) */ class A { public: A &operator=(const A& rhs) { printf("operator:%d\n", this-原创 2016-09-21 21:04:06 · 1363 阅读 · 0 评论 -
函数模板全特化与特殊的偏特化
//类模板的全特化和偏特化 #include #include template void f(T1 a1, T2 a2) { std::cout << "function template" << std::endl; std::cout << a1 << std::endl; std::cout << a2 << std::endl; } template <> void f(dou原创 2016-09-21 19:17:24 · 515 阅读 · 0 评论 -
类模板的全特化和偏特化
#include #include template class A { public: A(T1 self_str1,T2 self_str2) { printf("类模板:\n"); std::cout << self_str1 << std::endl; std::cout << self_str2 << std::endl; printf("\n"); } ~A(原创 2016-09-21 16:29:29 · 1250 阅读 · 0 评论 -
虚函数调用示例程序
#include class base { public: base() { f(); printf("base\n"); } virtual void f() { printf("base::f()\n"); } virtual void t() { printf("base::t()\n"); f(); } }; class subtype:public ba原创 2016-09-19 21:55:25 · 330 阅读 · 0 评论 -
初识bitset
#include using namespace std; /* 不够32,使用无符号 int 超过32,每多一个需要在后面添加一个无符号long long 所以后面递增8 */ int main() { bitset bit; bitset bit2; printf("32bit_length:%d\n",sizeof(bit));//4 8 16 24 32 40 printf原创 2016-09-19 21:07:58 · 282 阅读 · 0 评论