<commit_before>---
layout: post
title: 【shader基础二】固定编程shader：Shadjjjjer纹理混合讲解
category: 技术
tags: shader
description: 
---

##文章观点
文章的开头我先阐述一点我的观点:我们**不该在构造函数和析构函数期间调用virtual函数**，因为这样的调用不会带来你想要的效果。某些编译器会对这种调用发出警告，或者是在程序运行时出现连接错误。即使程序“正常”运行了，你也会对结果感到莫名其妙。

##观点分析
###对于构造函数
我们假设有一个动物类的继承层次，该基层层次源于一个基类Animal，由Animal类派生出Dog与Tiger类。我们知道每种动物都有自己的叫声，所以我们在基类Animal中声明了一个纯虚函数(pure virtual)Voice，然后由派生类自己实现特定的动物叫声.
	
基类Animal：
<commit_msg>add blog :c++虚函数<commit_after>---
layout: post
title: 【C++】为什么说绝不在构造函数或析构函数中调用虚函数？
category: 技术
tags: C＋＋｜对象模型
description: 
---

##文章观点
文章的开头我先阐述一点我的观点:我们**不该在构造函数和析构函数期间调用virtual函数**，因为这样的调用不会带来你想要的效果。某些编译器会对这种调用发出警告，或者是在程序运行时出现连接错误。即使程序“正常”运行了，你也会对结果感到莫名其妙。

##观点分析
###对于构造函数
我们假设有一个动物类的继承层次，该基层层次源于一个基类Animal，由Animal类派生出Dog与Tiger类。我们知道每种动物都有自己的叫声，所以我们在基类Animal中声明了一个纯虚函数(pure virtual)Voice，然后由派生类自己实现特定的动物叫声.
	
基类Animal：

{'fraction_non_alphanumeric': 0.11695906432748537, 'fraction_numerical': 0.0, 'mean_word_length': 12.587301587301587, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '539286', 'n_tokens_mistral': 656, 'n_tokens_neox': 756, 'n_words': 36}